/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
 //不定长滑动窗格法
int cmp(const void* pa, const void* pb){
    return *(int*)pa - *(int*)pb;
}
int* answerQueries(int* nums, int numsSize, int* queries, int queriesSize, int* returnSize) {
    qsort(nums, numsSize, sizeof(int), cmp);
    int *p = (int*)malloc(sizeof(int) * queriesSize);
    *returnSize = queriesSize;
    memset(p, 0, queriesSize);
    for(int i = 0; i < queriesSize; i++){
        int left = 0;
        int ans = 0;
        while(ans <= queries[i]){
            if(left == numsSize){
                p[i] = numsSize;
                break;
            }else{
                ans += nums[left++];
                p[i] = left - 1;
            }
        }//判断 ans 与 queries[i] 的大小，移动左边界，是 ans 达到大于 queries[i] 的临界值，此时下标就是对应 p[i] 所求。
    }
    return p;
}

/*给你一个长度为 n 的整数数组 nums（无序），和一个长度为 m 的整数数组 queries 。

返回一个长度为 m 的数组 answer ，其中 answer[i] 是 nums 中元素之和小于等于 queries[i] 的子序列的最大长度。

子序列是由一个数组删除某些元素（也可以不删除）但不改变剩余元素顺序得到的一个数组。*/